package com.atguigu.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 使用nacos当做配置中心
 * 1. 配置pom,引入依赖
 *
 *         <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-alibaba-nacos-config</artifactId>
 *         </dependency>
 * 2. 创建一个bootstrap.properties的文件，进行配置·
 *      spring.application.name=gulimall-coupon
 *      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 * 3. 要给nacos 配置中心创建一个数据集(Data id) , gulimall-coupon.properties 默认命名规则： 工程名.properties
 * 4. 给应用名.properties 添加任何配置
 * 5. 动态获取配置中心的配置数据
 *  1）. @RefreshScope 注解动态获取并刷新配置
 *       @Valid("${配置属性}")  获取配置中心的配置数据
 *       如果配置的属性中nacos和bootstrap.properties有相同的配置项，优先使用nacos配置
 *
 *  细节：
 *  1. 命名空间： 配置隔离
 *    默认：public (保留空间)。默认新增的所有配置都在public空间
 *    1. 开发，测试，生产，利用命名空间进行环境隔离
 *      注意：在bootstrap.properties配置上，需要使用哪个命名空间下的配置
 *      spring.cloud.nacos.config.namespace=a147d628-1467-496e-bb8d-d8595eb59af1
 *    2. 每一个微服务之间相互隔离，每一个微服务都有自己的命名空间，只加载自己的命名空间下文件
 *  2. 配置集： 所有配置的集合
 *
 *  3. 配置集ID： 类似文件名
 *  Data ID ：类似文件名
 *
 *  4. 配置分组： 就是将一个微服务下的不同的生产环境进行分组
 *
 * 同时加载多个数据集:
 *  将springapplication.yaml 文件中的配置进行拆分
 */
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
